/**
 * 更新折线图是否显示数据点标记
 * @param {string} value - 是否显示，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineShowSymbol(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.showSymbol = value === 'true';
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图数据点标记形状
 * @param {string} value - 形状值（如'circle'、'square'等）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineSymbol(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.symbol = value;
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图数据点标记大小
 * @param {string|number} value - 大小值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineSymbolSize(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.symbolSize = parseInt(value, 10);
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图线条宽度
 * @param {string|number} value - 线宽值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineLineStyleWidth(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.lineStyle = series.lineStyle || {};
                series.lineStyle.width = parseInt(value, 10);
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图是否平滑曲线
 * @param {string} value - 是否平滑，'true'表示平滑
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineSmooth(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.smooth = value === 'true';
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图平滑曲线的单调性
 * @param {string|boolean} value - 单调性（如'x'、'y'或false）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineSmoothMonotone(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.smoothMonotone = value || false;
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图是否显示填充区域
 * @param {string} value - 是否显示，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineAreaStyleShow(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                if (value === 'true') {
                    series.areaStyle = series.areaStyle || {};
                } else {
                    delete series.areaStyle;
                }
            }
        });
    }
    return currentOptions;
}
/**
 * 更新折线图填充区域颜色，支持多颜色按顺序分配，无颜色时使用默认渐变
 * @param {string} value - 颜色值，支持逗号分隔格式（如"#f40b0b,#73e316"）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineAreaStyleColor(value, currentOptions) {
    // 获取默认渐变色配置（与类中的getDefaultGradients保持一致）
    const defaultGradients = [
        { start: 'rgb(128, 255, 165)', end: 'rgb(1, 191, 236)' },
        { start: 'rgb(0, 221, 255)', end: 'rgb(77, 119, 255)' },
        { start: 'rgb(55, 162, 255)', end: 'rgb(116, 21, 219)' },
        { start: 'rgb(255, 0, 135)', end: 'rgb(135, 0, 157)' },
        { start: 'rgb(255, 191, 0)', end: 'rgb(224, 62, 76)' }
    ];

    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        // 处理颜色值：如果为空则使用默认渐变，否则解析为颜色数组
        let colors = [];
        const useDefaultGradient = !value || value.trim() === '';

        if (!useDefaultGradient) {
            // 解析用户提供的颜色字符串
            colors = value.split(',').map(color => color.trim());
        }

        // 遍历系列并分配颜色
        currentOptions.series.forEach((series, index) => {
            if (series.type === 'line' && series.areaStyle) {
                // 计算循环索引
                const colorIndex = index % (useDefaultGradient ? defaultGradients.length : colors.length);

                if (useDefaultGradient) {
                    // 使用默认渐变色
                    const gradient = defaultGradients[colorIndex];
                    series.areaStyle.color = new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                        { offset: 0, color: gradient.start },
                        { offset: 1, color: gradient.end }
                    ]);
                } else {
                    // 使用用户提供的颜色
                    series.areaStyle.color = colors[colorIndex] || value;
                }
            }
        });
    }
    return currentOptions;
}


/**
 * 更新折线图填充区域是否显示渐变
 * @param {string} value - 是否显示，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @param {Array} defaultGradients - 默认渐变颜色配置
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineAreaGradientShow(value, currentOptions, defaultGradients) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach((series, index) => {
            if (series.type === 'line' && series.areaStyle) {
                const gradientIndex = index % defaultGradients.length;
                const defaultGradient = defaultGradients[gradientIndex];
                const startColor = series.areaStyle.startColor || defaultGradient.start;
                const endColor = series.areaStyle.endColor || defaultGradient.end;

                series.areaStyle.color = value === 'true'
                    ? new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                        { offset: 0, color: startColor },
                        { offset: 1, color: endColor }
                    ])
                    : startColor;
            }
        });
    }
    return currentOptions;
}
/**
 * 更新折线图渐变起始色，支持多颜色按顺序分配
 * @param {string} value - 颜色列表字符串（格式如"#f11e1e,#0af0a3,#081c15,#deed07"）
 * @param {Object} currentOptions - 当前图表配置选项
 * @param {Array} defaultGradients - 默认渐变配置
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineAreaGradientStart(value, currentOptions, defaultGradients) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        // 解析颜色列表（处理可能的空格和空值）
        const startColors = value
            ? value.split(',').map(color => color.trim()).filter(Boolean)
            : [];

        currentOptions.series.forEach((series, index) => {
            if (series.type === 'line' && series.areaStyle) {
                const gradientIndex = index % defaultGradients.length;
                const defaultGradient = defaultGradients[gradientIndex];

                // 计算当前系列对应的颜色索引（循环取色）
                const colorIndex = index % startColors.length;
                // 确定当前系列的起始色（有配置用配置，无配置用默认）
                const currentStartColor = startColors.length
                    ? startColors[colorIndex]
                    : value || defaultGradient.start;

                // 更新存储的起始色属性
                series.areaStyle.startColor = currentStartColor;

                // 更新渐变对象（保持结束色不变）
                if (typeof series.areaStyle.color !== 'string') {
                    // 保留现有结束色，优先使用存储的endColor，其次用默认
                    const currentEndColor = series.areaStyle.endColor || defaultGradient.end;

                    series.areaStyle.color = new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                        { offset: 0, color: currentStartColor },
                        { offset: 1, color: currentEndColor }
                    ]);
                }
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图填充区域渐变结束颜色，支持多颜色按顺序分配
 * @param {string} value - 颜色列表字符串（格式如"#f11e1e,#0af0a3,#081c15,#deed07"）
 * @param {Object} currentOptions - 当前图表配置选项
 * @param {Array} defaultGradients - 默认渐变颜色配置
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineAreaGradientEnd(value, currentOptions, defaultGradients) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        // 解析颜色列表（处理可能的空格和空值）
        const endColors = value
            ? value.split(',').map(color => color.trim()).filter(Boolean)
            : [];

        currentOptions.series.forEach((series, index) => {
            if (series.type === 'line' && series.areaStyle) {
                const gradientIndex = index % defaultGradients.length;
                const defaultGradient = defaultGradients[gradientIndex];

                // 计算当前系列对应的颜色索引（循环取色）
                const colorIndex = index % endColors.length;
                // 确定当前系列的结束色（有配置用配置，无配置用默认）
                const currentEndColor = endColors.length
                    ? endColors[colorIndex]
                    : value || defaultGradient.end;

                // 更新存储的结束色属性
                series.areaStyle.endColor = currentEndColor;

                // 更新渐变对象（保持起始色不变）
                if (typeof series.areaStyle.color !== 'string') {
                    // 保留现有起始色，优先使用存储的startColor，其次用默认
                    const currentStartColor = series.areaStyle.startColor || defaultGradient.start;

                    series.areaStyle.color = new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                        { offset: 0, color: currentStartColor },
                        { offset: 1, color: currentEndColor }
                    ]);
                }
            }
        });
    }
    return currentOptions;
}


/**
 * 更新折线图终点标签可见性
 * @param {string} value - 是否显示，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineEndLabelShow(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.endLabel = series.endLabel || {};
                series.endLabel.show = value === 'true';
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图终点标签格式化器
 * @param {string} value - 格式化字符串
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineEndLabelFormatter(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line' && series.endLabel) {
                series.endLabel.formatter = value;
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图终点标签距离
 * @param {string|number} value - 距离值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineEndLabelDistance(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line' && series.endLabel) {
                series.endLabel.distance = parseInt(value, 10);
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图终点标签颜色
 * @param {string} value - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineEndLabelColor(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line' && series.endLabel) {
                series.endLabel.color = value;
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图堆叠方式
 * @param {string} value - 堆叠名称，空字符串表示不堆叠
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineStack(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.stack = value || '';
            }
        });
    }
    return currentOptions;
}

/**
 * 更新折线图是否为阶梯线
 * @param {string|boolean} value - 阶梯类型（如'true'、'false'、'start'等）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLineStep(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            if (series.type === 'line') {
                series.step = value || false;
            }
        });
    }
    return currentOptions;
}
/**
 * 更新折线图线条颜色
 * @param {string} value - 新的颜色值（如 #ff0000、rgb(255,0,0)）
 * @param {Object} currentOptions - 当前图表配置项
 * @returns {Object} 包含更新后线条样式的配置对象
 */
function updateLineLineStyleColor(value, currentOptions) {
    // 复制当前系列配置（避免直接修改原对象）
    const updatedSeries = (currentOptions.series || []).map(series => {
        // 仅处理折线图类型的系列
        if (series.type === 'line') {
            return {
                ...series,
                // 更新线条样式中的颜色（保留其他样式属性）
                lineStyle: {
                    ...(series.lineStyle || {}), // 继承原有线条样式配置
                    color: value // 覆盖颜色值
                }
            };
        }
        // 非折线图系列不处理，直接返回原配置
        return series;
    });

    // 返回仅包含更新部分的配置（ECharts 会合并更新）
    return {
        series: updatedSeries
    };
}
